package com.ruoyi.system.kiteUtils;

import java.lang.reflect.Field;
import com.ruoyi.common.annotation.Excel;

public class FieldChangeDetail {
    private String fieldName;     // 字段英文名
    private String fieldNameCn;   // 字段中文名
    private Object oldValue;      // 原值
    private Object newValue;      // 新值
    private String fieldType;     // 字段类型

    public FieldChangeDetail(Field field, Object oldValue, Object newValue) {
        this.fieldName = field.getName();
        this.fieldNameCn = getChineseName(field);
        this.oldValue = oldValue;
        this.newValue = newValue;
        this.fieldType = field.getType().getSimpleName();
    }

    // 从@Excel注解获取中文名
    private String getChineseName(Field field) {
        Excel excelAnnotation = field.getAnnotation(Excel.class);
        return excelAnnotation != null ? excelAnnotation.name() : field.getName();
    }

    // Getter方法
    public String getFieldName() { return fieldName; }
    public String getFieldNameCn() { return fieldNameCn; }
    public Object getOldValue() { return oldValue; }
    public Object getNewValue() { return newValue; }
    public String getFieldType() { return fieldType; }

    @Override
    public String toString() {
        return String.format("%s 从 '%s' 修改为 '%s'",
                fieldNameCn, oldValue, newValue);
    }
}
